public class code {
    //常量池的介绍
    public static void main1(String[] args) {
        String s1 = "hello";
        String s2 = "hello";

        String s3 = new String("hello");
        String s4 = new String("hello");

        //1.只要是双引号引起来的字符串都存储在常量池
        //2.每次存储的时候，先检查常量池是否存在改字符串，如果没则存储，有则直接使用常量池的字符串
        System.out.println(s1==s2);//true
        //原因解释：常量池中已经存储了,s1和s2的地址一样，所以结果一样

        System.out.println(s1==s3);//false

        System.out.println(s3==s4);//false

        //总结：String直接定义的一样；new的不一样

    }

    //intern的介绍
    public static void main(String[] args) {
        char[] ch = new char[]{'a', 'b', 'c'};
        String s1 = new String(ch);
        s1.intern();//把当前s1指向的对象入池
        String s2 = "abc";
        System.out.println(s1 == s2);//true，如果没有intern则为false
    }
}
